Jak działa Windows cz 4

Dziś dowiemy się, dlaczego Windows jest systemem 32-bitowym i co z tego wynika.

 

Systemy 16-bitowe

To, że system jest 8-, 16- czy 32-bitowy zależy od sposobu zarządzania pamięcią RAM i jej podziału na tzw. segmenty. W systemach 16-bitowych (DOS, Windows 3.1x) każdy segment miał wielkość 65536 bajtów, bo tyle dało się zapisac zapisac za pomocą 16 bitów (2 bajty, od &H0000 do &HFFFF). Było o tyle kłopotliwe, że rzadko który program zajmował mniej niż te 64 KB. Tak więc trzeba było wyróżniać segmentu kodu, stosu, danych itp. Do tego dochodzą jeszcze (w językach wyższego poziomu niż assembler) takie kwiatki jak model pamięci, wskaźniki dalekie i bliskie i tym podobne rzeczy.
Łatwo policzyć, że maksymalna ilość adresowanej w ten sposób pamięci to ok. 4 GB (65 tysięcy segmentów po 65 tysięcy bajtów każdy).

 

Systemy 32-bitowe

Żeby w pełni korzystać z dobrodziejstw 32-bitowości, trzeba mieć 32-bitowy procesor. To akurat nie problem, bo wszystkie jednostki od 386 wzwyż spełniają ten warunek. Czym się różni taki procesor od starszych? Na przykład tym, że posiada 32-bitowe rejestry, np. EAX:

EAX 43 56 12 67h
AX 12 67h
AH 12h
AL 67h

Jednak najlepsze jest to, że nie trzeba się martwić o segmenty, gdyż ich praktycznie nie ma. No, właściwie są, tyle że jeden zamiast 64 KB zajmuje... 4 GB! Po prostu zamiast dwóch liczb 16-bitowych:

0453h : 6784h
segment : offset

wprowadzono jedną 32-bitową:

04536784h
offset

Taki model jest nazywany pamięcia płaską (flat) i korzysta z niego Windows wraz ze wszystkimi doń programami.

 

Pamięć wirtualna

Windows dba o to, żeby każdy program teoretycznie mógł korzystać z całego czterogigabajtowego segmentu pamięci. Oczywiście bardzo rzadko jest to naprawdę możliwe, w końcu niewielu ma więcej niż kilkaset megabajtów RAMu. W dodatku jednocześnie uruchomionych jest zawsze przynajmniej kilka programów. I tu przychodzi czas na pamięć wirtualną. jeżeli zabraknie RAMu, Windows wykorzystuje część dysku jako tak zwany plik wymiany. Dzięki temu może udawac, że ma znacznie więcej pamięci w rzeczywistości, ale z uszczerbkiem na szybkości (w końcu RAM jest znacznie szybszy niż dysk twardy). To, w jakim stopniu plik wymiany jest wykorzystywany zależy od ilości pamięci operacyjnej. Samo Windows potrzebuje kilka jej megabajtów, przeciętny niewielki program (jak np. WordPad, Paint) zajmuje mniej więcej kilkaset KB do jednego MB, natomiast wieksze (Word, Excel) - od kilku do nawet kilkunastu MB. Tak więc np. 32 MB pamięci to zdecydowanie za mało, ale 64 MB to juz nieźle. Pominąłem tu jeszcze takie rzeczy jak na przykład Schowek (wciśnij raz Print Screen i juz masz 1,5 MB pamięci mniej :))

 

Na dzisiaj to koniec. Zapewne niektórzy zadają sobie pytanie: po kiego to? Co z tej wiedzy przyda się w VB? Śmiem twierdzić, że całkiem sporo, a w następnej cześci podam kilka przykładów.

 

 

Karol Kuczmarski
qkarol@go2.pl
http://www.qkarol.prv.pl
ICQ: 69629311